48. 基于JMX的监控和管理

Java管理扩展(JMX)提供了一种标准的监控和管理应用的机制。默认情况下,Spring Boot在org.springframework.boot域下将管理端点暴露为JMX MBeans。

48.1 自定义MBean名称

MBean的名称通常产生于端点的id,例如,health端点被暴露为org.springframework.boot/Endpoint/healthEndpoint

如果应用包含多个Spring ApplicationContext,你会发现存在名称冲突。为了解决这个问题,你可以将endpoints.jmx.uniqueNames设置为true,这样MBean的名称总是唯一的。

你也可以自定义端点暴露的JMX域,具体可参考以下application.properties示例:

endpoints.jmx.domain=myapp
endpoints.jmx.uniqueNames=true

### 48.2 禁用JMX端点
如果不想通过JMX暴露端点,你可以将`endpoints.jmx.enabled`属性设置为`false`:
```java
endpoints.jmx.enabled=false

48.3 使用Jolokia通过HTTP实现JMX远程管理

Jolokia是一个JMX-HTTP桥,它提供了一种访问JMX beans的替代方法。想要使用Jolokia,只需添加org.jolokia:jolokia-core的依赖。例如,使用Maven需要添加以下配置:

<dependency>
    <groupId>org.jolokia</groupId>
    <artifactId>jolokia-core</artifactId>
 </dependency>

然后在你的管理HTTP服务器上可以通过/jolokia访问Jolokia。

48.3.1 自定义Jolokia

Jolokia有很多配置,通常使用servlet参数进行设置,跟Spring Boot一块使用时可以在application.properties中添加jolokia.config.前缀的属性进行配置:

jolokia.config.debug=true

48.3.2 禁用Jolokia

如果正在使用Jolokia,又不想让Spring Boot配置它,你只需要简单的将endpoints.jolokia.enabled属性设置为false

endpoints.jolokia.enabled=false